import type { PageParam, PageResult } from '@vben/request';

import { requestClient } from '#/api/request';

export namespace EdubaseSchoolYearGradeApi {
  /** 年度学校年级关联表信息 */
  export interface SchoolYearGrade {
    id: number; // 年度年级ID（主键）
    schoolId?: number; // 学校ID（关联学校表主键）
    campusId: number; // 校区id
    academicYear?: string; // 学年
    period: string; // 所属学段
    gradeCode?: number; // 年级编码
    gradeName?: number; // 年级名称
    gradeAlias: string; // 年度年级别名（如：2024级一年级、2025届高三）
    classCount: number; // 该年度该年级开设的班级数量（默认0）
    headUserId: number; // 年级组长用户id
    headTeacherId: number; // 年级组长ID（关联教师表主键）
    headTeacherName: string; // 年级组长姓名（冗余存储，快速查询）
    previousGradeId: number; // 前置年级ID（关联本表格id，记录升学关系）
    status?: number; // 是否有效：1=有效，0=无效（如停招）
    enrollmentYear: number; // 入学年份（大学）
    remarks: string; // 备注（如：2024级一年级新增2个实验班）
    metadata: string; // 其他参数
  }
}

/** 查询年度学校年级关联表分页 */
export function getSchoolYearGradePage(
  data: PageParam,
  desensitize: boolean,
  encrypt: boolean,
) {
  return requestClient.post<
    PageResult<EdubaseSchoolYearGradeApi.SchoolYearGrade>
  >('/edu/base/school-year-grade/page', data, { desensitize, encrypt });
}

/** 查询年度学校年级关联表详情 */
export function getSchoolYearGrade(id: number) {
  return requestClient.get<EdubaseSchoolYearGradeApi.SchoolYearGrade>(
    `/edu/base/school-year-grade/get?id=${id}`,
  );
}

/** 新增年度学校年级关联表 */
export function createSchoolYearGrade(
  data: EdubaseSchoolYearGradeApi.SchoolYearGrade,
) {
  return requestClient.post('/edu/base/school-year-grade/create', data);
}
/** 初始化年级数据 */
export function initSchoolYearGrade(
  data: EdubaseSchoolYearGradeApi.SchoolYearGrade,
) {
  return requestClient.post('/edu/base/school-year-grade/init', data);
}
/** 修改年度学校年级关联表 */
export function updateSchoolYearGrade(
  data: EdubaseSchoolYearGradeApi.SchoolYearGrade,
) {
  return requestClient.put('/edu/base/school-year-grade/update', data);
}

/** 删除年度学校年级关联表 */
export function deleteSchoolYearGrade(id: number) {
  return requestClient.delete(`/edu/base/school-year-grade/delete?id=${id}`);
}

/** 批量删除年度学校年级关联表 */
export function deleteSchoolYearGradeList(ids: number[]) {
  return requestClient.delete(
    `/edu/base/school-year-grade/delete-list?ids=${ids.join(',')}`,
  );
}

/** 导出年度学校年级关联表 */
export function exportSchoolYearGrade(params: any) {
  return requestClient.download('/edu/base/school-year-grade/export-excel', {
    params,
  });
}
